約 6,112,150 件
https://w.atwiki.jp/f-01a/pages/16.html
iアプリ iアプリDoJaプロファイルとの互換性について DoJaからStarへ移行するメリットとデメリットStar移行のメリット Star移行のデメリット F-01Aのiアプリのスペック F-01AのオプションAPI対応状況 Starプロファイルにおいてのiアプリ開発Tips DoJa5.1→Star1.0の変更点 Star1.0→Star1.1の変更点 Star1.1→Star1.2の変更点 Star1.2→Star1.3の変更点 Star1.3→Star1.5の変更点 Starプロファイルでの新機能・変更点基本事項 DoJaプロファイルとの互換性について バイナリ互換機能によりDoJa-5.1相当のアプリを実行可能現在公開されているiアプリをそのまま利用できる この機能は当面の間だけであり、今後は無くなる可能性がある DoJaアプリ実行時の制限DoJaアプリからの連携起動ではDoJaアプリしか起動できない 連携起動時の最大パラメータサイズが異なる DoJaアプリは待ち受け起動できるがStarアプリはできないただし同様の機構は存在する(iWidgetのみ) DoJaアプリかStarアプリかはADFのAppTypeキーの有無によって判別される DoJaからStarへ移行するメリットとデメリット Star移行のメリット iウィジェット(ミニアプリ)を作成できる Flashと連携できる(FlashPlayerPane) ソフトキーを4つ使用できるDoJaでは左上と右上の2つのみ 決定キーにラベルを設定できる決定キーの機能を明確にできる 方向キーの矢印の表示方向キー使用可否やスクロール有無を示せる 対応フォントサイズの増加12/16/24/30/32/48/60ドット+拡張サイズが使用可能 DoJaで確実に使用できるのは12/24ドットのみ(他のサイズは機種依存) タッチパネルを利用できる(TouchDevice) シンセサイザを動的制御できる(Synthesizer) トラステッド機能の強化iアプリオンラインを利用できる(SocketConnection/UDPDatagramConnection) iアプリコールを利用できる(Invitation) アプリからマイメニュー登録ができる(Contents) 独自クラスの組み込みが可能(ByteArrayClassLoader)クラスを外部から取得して組み込める 拡張機能をネットワークから取得するなどの使い方が可能 Star移行のデメリット ソースの手直しが必要になるただしDoJa-5.1からの単純移植であれば比較的簡単に移行可能 詳細はiアプリ開発Tipsを参照 待ち受けアプリケーションが作成できない 現状では対応端末が少ない905iや906iの値下げもあるためなかなかユーザが増えない? 一般開発者にとっては新規クラスが少なく機能規制緩和も無い F-01Aのiアプリのスペック iアプリのスペックを参照 F-01AのオプションAPI対応状況 API対応状況を参照 Starプロファイルにおいてのiアプリ開発Tips iアプリ開発Tipsを参照 DoJa5.1→Star1.0の変更点 DoJa5.1→Star1.0を参照 Star1.0→Star1.1の変更点 Star1.0→Star1.1を参照 Star1.1→Star1.2の変更点 Star1.1→Star1.2を参照 Star1.2→Star1.3の変更点 Star1.2→Star1.3を参照 Star1.3→Star1.5の変更点 Star1.3→Star1.5を参照 Starプロファイルでの新機能・変更点 基本事項 DoJa-5.1に対する機能追加という位置づけ既存クラスは基本的に残っているが削除されたものもある 一部オプションAPIが基本APIになった 詳細はDoJa5.1→Star1.0を参照 パッケージ名が変更になったcom.nttdocomo → com.docomostar アプリによってはimportと起動クラスを書き換えるだけで移行できるimportのcom.nttdocomoをcom.docomostarに置換 起動クラスのextendsをIApplicationからStarApplicationに変更 起動クラスのvoid start()をvoid started(int launchType)に変更 詳細はiアプリ開発Tipsを参照 アプリ形態が大きく分けて3つに増加フルアプリ(iアプリ) ミニアプリ(iWidgetまたはウィジェットアプリ) フル+ミニアプリ(上記2つを1つにパッケージしたもの)フル+ミニアプリ(通常起動時にフルアプリが起動する) ミニ+フルアプリ(通常起動時にミニアプリが起動する) フル+ミニアプリの場合、スクラッチパッド領域は共有されるただしスクラッチパッドの0番目(scratchPad ///0)のみ ミニアプリが0番目にしかアクセスできないため ミニアプリの制限UI絡みのオプションAPIがほぼ使用不可 基本APIのオプション機能は一部使用不可 JARが50KB、スクラッチパッド(scratchPad ///0のみ可)が200KBに制限 ソフトキーは左上と右上の2つのみ制御可能(残りはWidgetViewが使用) 領域サイズは440x80, 320x240, 240x320, 160x160のみただしフェイス画像によりさらに小さくしたり角を丸めたりできる 一覧表示状態では上記サイズから60%程度に縮小されて表示される ミニアプリは同時実行できるが動作が競合した場合は基本的に後発が無効になる ヒープがフルアプリに対して1割程度となる
https://w.atwiki.jp/azumax0527/pages/7.html
2013年9月に発売されたiPhone5s 歴代iPhone 1.1iPhone 1.2iPhone 3G 1.3iPhone 3GS 1.4iPhone 4 1.5iPhone4s 1.6iPhone5 1.7iPone5s/5c iPhoneの歴史 iPhone 2007年1月9日 Macworld Expo 2007にて発表。2007年6月29日にアメリカ合衆国にて発売された。 アップル社のデジタルオーディオプレーヤーとして販売しているiPod、携帯電話、インターネット、メールの送受信等が行える携帯情報端末として登場した。 iPhone 3G
https://w.atwiki.jp/docomoprosh03b/pages/28.html
マルチアクセス(平行して利用可能な通信機能) (例)音声通話中に、iモード通信は行えるがTV電話の発信はできない。 (例)iモード通信中に、TV電話の着信があったら、電話を受けるか選べる。 通話(発信) 通話(着信) TV電(発信) TV電(着信) iモード iモードメール(送信) iモードメール(受信) SMS(送信) SMS(受信) GPS ワンセグ 音声通話中 キ キ × キ ○ ○ ○ ○ ○ ○ ○ TV電話中 × キ × キ × × × × ○ ○ × iモード中 ○ ○ 割 割 × ○ ○ ○ ○ ○ ○ iアプリ中 割 割 割 割 × 割 ○ 割 ○ 割 × ワンセグ ○ ○ × 割 ○ ○ ○ ○ ○ ○ × ○ 使用中の通信状態を維持したまま、通信や実行が行える × 使用中の通信状態を維持し続けます。 割 使用中の通信を中断し、優先して機能を実行させます。または、どちらを優先させるかユーザーが選択します。 キ キャッチホンサービスを利用している場合に実行可能です。 マルチアシスタント(平行して利用可能な機能) 着信履歴など クイック検索 iモード メール iアプリ データBOX ワンセグ MUSIC iモード ○ ○ × ○ × ○ ○ ○ メール ○ ○ ○ ○ ○ ○ ○ ○ iアプリ ○ ○ × ○ × × ○ ○ フルブラ ○ ○ × ○ × ○ ○ ○ 音声通話 ○ ○ ○ ○ ○ × ○ × ミュージック ○ ○ ○ ○ ○ × ○ × ビデオ ○ ○ ○ ○ × × × × データBOX ○ ○ ○ ○ × × ○ × スケジュール ○ ○ ○ ○ ○ ○ ○ ○ ワンセグ ○ ○ ○ ○ ○ ○ × △ ○・・・起動できる機能 △・・・選択できるけど起動しない機能 ×・・・起動できない機能(グレーアウトして選択できない) ※iモーションやメロディ再生中にバックグラウンド再生は出来ません。 動作中の機能の内容によっては、表に従わない場合もある メモリ不足などには注意 オープンポジション(キーボードを出した状態)では音声電話発信はできません。 ワンセグ視聴中にデータBOXのデータの表示や再生は出来ません。
https://w.atwiki.jp/eluga/pages/23.html
外部リンク 公式ページ docomo with series P-07C サポート情報 (docomo) ドコモ スマートフォン P-07C (Panasonic) 製品レビュー等 写真で解説する「P-07C」 (ITmedia) プリセットアプリが充実、使い勝手も工夫した「P-07C」 (Impress ケータイ Watch) ドコモ スマートフォン P-07C (Wikipedia) パナソニック P-07C docomo [Black] (kakaku.com) パナソニック P-07C docomo [White] (kakaku.com) 某掲示板の関連スレ 現行スレ docomo P-07C part1 http //anago.2ch.net/test/read.cgi/smartphone/1314018100/ 過去スレ パナソニックが初のスマホンP-07Cどうよ? http //hibari.2ch.net/test/read.cgi/smartphone/1309342612/ パナソニックが初のスマホンP-07Cどうよ? 2 http //hibari.2ch.net/test/read.cgi/smartphone/1312998172/ 【Kuso-Sma】P-07Cどうよ?3【No.1】 http //hibari.2ch.net/test/read.cgi/smartphone/1313920050/ 以下広告
https://w.atwiki.jp/0303wiki/pages/26.html
PhotoShop について色々 設定 ワコムのペンタブを使う絵描きさんに 作業効率を上げる「マッピング」のすすめ | お絵かき速報!萌え絵上達法 ワコムのペンタブを使う絵描きさんに 作業効率を上げる「マッピング」のすすめ2 | お絵かき速報!萌え絵上達法 一般 グラデーションをより美しく滑らかにするPhotoshopのアクション -No More Banding | コリス Photoshop用ライティングエフェクトブラシ - 無料 - CG Game Brain Photoshop Illustrator CS6 の進化したところと不具合まとめ | Stocker.jp / diary Photoshopでのフォトレタッチ革命!カラーグレーディングプラグイン:Magic Bullet PhotoLooks CS6対応、Photoshopのレイヤー周りの機能をもっと便利にする12のツール-Trevor Morris Scripts for CS6 | コリス ウェブデザインのセンスを学ぼう、2012年上半期洗練されたディテールのUIデザインのまとめ | コリス スクリプティング Adobe Photoshop CS2自動化作戦 Adobe Photoshop CS4自動化作戦 Adobe Photoshop CS5自動化作戦 PS-Scripts Forum Web用に保存機能をスクリプトで(VBS COM) Pete Hanshaw Creating Guides in a Photoshop document using Python(Python COM comtypes ) Pete Hanshaw Creating Guides in a Photoshop document using Python- Part Two(Python COM comtypes ) Pete Hanshaw Python and photoshop- code snippets(Python COM comtypes ) Scripting Photoshop CS with C#
https://w.atwiki.jp/4423/pages/3449.html
上部タグ未削除 編集する。 2021-12-08 18 34 58 (Wed) - iPhoneとは、apple社の携帯電話。 videoプラグインエラー 正しいURLを入力してください。 リンク内部リンク 外部リンク 討論用 情報収集 編集者用ミニ編集参加(文の提供・嘘・誤字等) 出典、参考 リンク 内部リンク [[]] [[]] [[]] 外部リンク 上へ 討論用 名前 コメント すべてのコメントを見る 編集する。 2021-12-08 18 34 58 (Wed) - 情報収集 トラックバック一覧 trackback テクノラティ検索結果 #technorati 口コミ一覧 #bf 関連ブログ一覧 #blogsearch リンク元 #ref_list 上へ 編集者用 ミニ編集参加(文の提供・嘘・誤字等) 出典、参考 上へ
https://w.atwiki.jp/iphonedev/pages/15.html
closed API,private Framework に関する情報も絶賛募集しています。(そうでないとこのwikiの意味がありません。) 適宜コメントを挿入していただけると助かります. ネットワーク関連 HTMLの取得(NSURL、NSString) 文字処理関連 HTMLから1行ずつ取り出す(NSString、NSRange) Notification関連 Darwinに送信されるNotificationをキャッチ。 i.SBメールの受信時にバイブを鳴らす(CFNotification, CoreTelephony) ネットワーク関連 HTMLの取得(NSURL、NSString) #import Foundation/Foundation.h main(int argv, char* argc[]) { NSString *src; NSURL * boardurl; NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; boardurl = [NSURL URLWithString @"http //menu.2ch.net/bbstable.html"]; src = [NSString stringWithContentsOfURL boardurl encoding NSShiftJISStringEncoding error nil]; NSLog(@"result %@", src); [pool release]; } 文字処理関連 HTMLから1行ずつ取り出す(NSString、NSRange) #import Foundation/Foundation.h main(int argv, char* argc[]) { NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; NSString *src; NSURL * boardurl; NSString* parsedString; NSRange range, subrange; int length; boardurl = [NSURL URLWithString @"http //menu.2ch.net/bbstable.html"]; src = [NSString stringWithContentsOfURL boardurl encoding NSShiftJISStringEncoding error nil]; length = [src length]; range = NSMakeRange(0, length); while (range.length 0) { subrange = [src lineRangeForRange NSMakeRange(range.location, 0)]; parsedString = [src substringWithRange subrange]; NSLog(@"result %@", parsedString ); range.location = NSMaxRange(subrange); range.length -= subrange.length; } [pool release]; } Notification関連 Darwinに送信されるNotificationをキャッチ。 単体アプリ内でやりとりされるNotificationはこの方法ではキャッチできない。 この例のソースは設定画面での表示言語の変化をキャッチする。 キャッチしたいNotificationが複数の場合はCFNotificationCenterAddObserver()をその数だけ呼び出す。 ※Notification一覧は添付のcom_apple_notification_list.txt参照のこと。 添付リストにはフレームワークから抽出したNotificationのみ記載。アプリがシステムに送るものは各自で抽出のこと。 /* * gcc -w -o get_darwinnotify get_darwinnotify.m -I/opt/iphone20-headers/usr/lib/gcc/arm-apple-darwin9/4.0.1/include -I/opt/iphone20-headers/include -I/opt/iphone20-headers/usr/include -I/var/include -L/usr/lib -F/System/Library/Frameworks -F/System/Library/PrivateFrameworks -bind_at_load -lobjc -framework CoreFoundation -framework Foundation -framework UIKit -framework CoreTelephony -framework CFNetwork -framework AudioToolbox -lSystem -lm ldid -S get_ctnotify */ #import Foundation/Foundation.h #import AudioToolbox/AudioServices.h #include stdio.h #include notify.h #include unistd.h #include stdarg.h static void callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) { if ([name isEqualToString @"kCTSMSClass0StringReceivedNotification"]) { NSLog(@"kita-!!\n"); AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); } return; } static void sigHandler(int sigraised) { printf("\nInterrupted.\n"); _exit(0); } int main(int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; CFNotificationCenterAddObserver( CFNotificationCenterGetDarwinNotifyCenter(), NULL, callback, @"com.apple.language.changed", NULL, CFNotificationSuspensionBehaviorHold ); signal(SIGINT, sigHandler); CFRunLoopRun(); return 0; } i.SBメールの受信時にバイブを鳴らす(CFNotification, CoreTelephony) /* * gcc -w -o get_ctnotify get_ctnotify.m -I/opt/iphone20-headers/usr/lib/gcc/arm-apple-darwin9/4.0.1/include -I/opt/iphone20-headers/include -I/opt/iphone20-headers/usr/include -I/var/include -L/usr/lib -F/System/Library/Frameworks -F/System/Library/PrivateFrameworks -bind_at_load -lobjc -framework CoreFoundation -framework Foundation -framework UIKit -framework CoreTelephony -framework CFNetwork -framework AudioToolbox -lSystem -lm ldid -S get_ctnotify */ #import Foundation/Foundation.h #import AudioToolbox/AudioServices.h #include stdio.h #include notify.h #include unistd.h #include stdarg.h static void callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) { if ([name isEqualToString @"kCTSMSClass0StringReceivedNotification"]) { NSLog(@"kita-!!\n"); AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); } return; } static void sigHandler(int sigraised) { printf("\nInterrupted.\n"); _exit(0); } int main(int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; CTTelephonyCenterAddObserver( CTTelephonyCenterGetDefault(), NULL, callback, NULL, NULL, CFNotificationSuspensionBehaviorHold ); signal(SIGINT, sigHandler); CFRunLoopRun(); return 0; }
https://w.atwiki.jp/iphone_memo/pages/23.html
Installer 4 Jailbreak後、Installer 4 を導入する方法 手順 1. installer-40b3.zipをダウンロードする。 2. /Applicationsフォルダにwinscp等を用いてInstaller.appをコピー。 3. /var/mobile/ に "Documents"フォルダを作成し、パーミッションを777に設定。 同じく、 /Applicationsフォルダに "Documents"フォルダを作成し、パーミッションを777に設定。 4. iPod touch / iPhoneを再起動する。 5. PuTTYを使用して、以下のコマンドを入力。(パス入力字の文字は表示されない。) chmod -R 777 "/Applications/Installer.app" chmod a+srx "/Applications/Installer.app/Installer" killall SpringBoard iPhoneが再起動され、完了。最新版が出ているのでアップデートしておく。
https://w.atwiki.jp/veohword/pages/14.html
用意するもの。 iPhone・3G回線orWifi(Wifi推奨) これだけ! OptionでMyvideoがあればVeoh動画をiPhone上にDLすることが可能となります。 まず、iPhoneからここへ行く 1.右上の虫眼鏡マークをクリックする 2.自分の見たい動画を検索する。 [海外サイトなので普通に日本名で入れても出ないことがほとんどです。] 3.見たい動画を選択する。 4.再生!
https://w.atwiki.jp/miottia/pages/29.html
設定の制御 コンテンツ 設定の制御コンテンツ 概要 画面の輝度 GPS(取得のみ) ネットワーク位置情報(取得のみ) Wi-Fi 画面の自動回転 Bluetooth 機内モード 電池の残量(取得のみ) 端末の音量 システムの言語(取得のみ) アカウントの同期 呼び出しモード 画面ロックの種別(取得のみ) 画面の消灯時間 ストレージの容量(取得のみ) アニメーション速度 ファンシーなIMEアニメーション データ通信 キャッシュのクリア コメント 概要 OreSettingsを作成した際の技術メモです 主にAndroidの輝度、音量、各種モードなどの設定方法について記載します対象OSはAndroid 2.2以降です このページに記載されているすべてのソースコードはパブリックドメインとします内容は無保証です 画面の輝度 取得 パーミッションは不要 // 輝度を取得(brightnessは0~255) int brightness = System.getInt(getContentResolver(), System.SCREEN_BRIGHTNESS); // パーセント表記(0~100)にする場合 int percent = brightness * 100 / 255; 設定 android.permission.WRITE_SETTINGSのパーミッションが必要 システムの輝度を変更後に画面の輝度を変更→Activity終了で反映される仕様(バグ?)を利用 // 輝度を設定(brightnessは0~255) System.putInt(getContentResolver(), System.SCREEN_BRIGHTNESS, brightness); // 輝度を0.0~1.0に変換 float brf = (float)brightness / 255.0f; // android.view.WindowManager.LayoutParamsを取得 LayoutParams lp = getWindow().getAttributes(); // 輝度を設定 lp.screenBrightness = brf; // 輝度を反映(この時点で画面の輝度が変わる) // 本来この方法は現在のActivityの輝度設定にしか使えない getWindow().setAttributes(lp); // この後にActivityを閉じると設定値が永続的に反映される(されてしまう) 備考 100段階で設定する場合、実際の指定は0~255なのでうまく変換する必要あり適当に実装すると設定と取得で値が異なる事態が起こりうる 機種によっては輝度を特定の値以下にすると即ブラックアウトするので注意エミュレータでも再現可能 ロック画面解除後も即ブラックアウトするため危険 GPS(取得のみ) 取得 android.permission.ACCESS_FINE_LOCATIONのパーミッションが必要 // 位置情報マネージャを取得 LocationManager manager = (LocationManager)getSystemService(LOCATION_SERVICE); // GPSの設定を取得 boolean state = manager.isProviderEnabled(LocationManager.GPS_PROVIDER); 備考 Android 2.2まではコードから強引に変更する方法が存在したleibunのテクニカルブログ GPSの設定を変更する方法 Android 2.3で仕様が変わったため以降は使用不可 ネットワーク位置情報(取得のみ) 取得 android.permission.ACCESS_COARSE_LOCATIONのパーミッションが必要 android.permission.ACCESS_FINE_LOCATIONが設定済みの場合は不要(上記を兼ねる) // 位置情報マネージャを取得 LocationManager manager = (LocationManager)getSystemService(LOCATION_SERVICE); // ネットワーク位置情報の設定を取得 boolean state = manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 備考 特になし Wi-Fi 取得 android.permission.ACCESS_WIFI_STATEのパーミッションが必要 // Wi-Fiマネージャを取得 WifiManager manager = (WifiManager)getSystemService(WIFI_SERVICE); // Wi-Fiが有効かを取得 boolean state = manager.isWifiEnabled(); 設定 android.permission.CHANGE_WIFI_STATEのパーミッションが必要 // Wi-Fiマネージャを取得 WifiManager manager = (WifiManager)getSystemService(WIFI_SERVICE); // Wi-Fiの有効/無効を設定 manager.setWifiEnabled(state); 通知 android.permission.ACCESS_WIFI_STATEのパーミッションが必要 次のブロードキャストを受信する WifiManager.WIFI_STATE_CHANGED_ACTION 備考 特になし 画面の自動回転 取得 パーミッションは不要 // 自動回転かを取得(0は回転なし、1は回転あり) int value = System.getInt(getContentResolver(), System.ACCELEROMETER_ROTATION); 設定 android.permission.WRITE_SETTINGSのパーミッションが必要 // 自動回転かを設定(0は回転なし、1は回転あり) System.putInt(getContentResolver(), System.ACCELEROMETER_ROTATION, value); 備考 特になし Bluetooth 取得 android.permission.BLUETOOTHのパーミッションが必要 // Bluetoothアダプタの取得 BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); // アダプタが使用可能な場合 if(adapter != null) { // Bluetoothが有効かを取得 boolean state = adapter.isEnabled(); } 設定 android.permission.BLUETOOTH_ADMINのパーミッションが必要 // Bluetoothアダプタの取得 BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); // アダプタが使用可能な場合 if(adapter != null) { // 有効にする場合 adapter.enable(); // 無効にする場合 // adapter.disable(); } 通知 android.permission.BLUETOOTHのパーミッションが必要 次のブロードキャストを受信する BluetoothAdapter.ACTION_STATE_CHANGED 備考 Bluetoothが使用できない端末ではBluetoothAdapter.getDefaultAdapter()はnullを返す 機内モード 取得 パーミッションは不要 // 機内モードかを取得(0はNO、1はYES) int value = System.getInt(getContentResolver(), System.AIRPLANE_MODE_ON); 設定 android.permission.WRITE_SETTINGSのパーミッションが必要 // 設定する場合:value = 1; state = true; // 解除する場合:value = 0; state = false; // 機内モードかを設定(0はNO、1はYES) System.putInt(getContentResolver(), System.AIRPLANE_MODE_ON, value); // ACTION_AIRPLANE_MODE_CHANGEDをブロードキャスト Intent intent = new Intent(); intent.setAction(Intent.ACTION_AIRPLANE_MODE_CHANGED); intent.putExtra("state", state); sendBroadcast(intent); 備考 設定時はSystem.putInt()だけでなくブロードキャストも必要 Intent.ACTION_AIRPLANE_MODE_CHANGEDはprotected intentのはずだが何故か送出可能 API Level 17(JELLY_BEAN_MR1)以降では設定が動作しないため以下の分岐を使うことを推奨 if(Build.VERSION.SDK_INT 17) { // 設定処理 } 電池の残量(取得のみ) 取得 パーミッションは不要 // ACTION_BATTERY_CHANGEDを受け取るためのフィルタを生成 IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); // 同期的に電池の残量を取得 Intent intent = getApplicationContext().registerReceiver(null, filter); // 最大レベルを取得 int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100); // 現在のレベルを取得 int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); 通知 パーミッションは不要 次のブロードキャストを受信する Intent.ACTION_BATTERY_CHANGED 備考 ApplicationContextのregisterReceiver()を使うことで同期的に電池の残量を取得可能第一引数をnullにするとレシーバを登録せずに済む stickyなブロードキャストでのみ有効 端末の音量 取得 パーミッションは不要 // typeは以下のいずれか // AudioManager.STREAM_RING // AudioManager.STREAM_VOICE_CALL // AudioManager.STREAM_MUSIC // AudioManager.STREAM_ALARM // AudioManager.STREAM_NOTIFICATION // AudioManager.STREAM_SYSTEM // AudioManager.STREAM_DTMF // オーディオマネージャの取得 AudioManager manager = (AudioManager)getSystemService(AUDIO_SERVICE); // 最大音量を取得 int max = mAudioManager.getStreamMaxVolume(type); // 現在の音量を取得 int cur = mAudioManager.getStreamVolume(type); 設定 パーミッションは不要 // typeは以下のいずれか // AudioManager.STREAM_RING // AudioManager.STREAM_VOICE_CALL // AudioManager.STREAM_MUSIC // AudioManager.STREAM_ALARM // AudioManager.STREAM_NOTIFICATION // AudioManager.STREAM_SYSTEM // AudioManager.STREAM_DTMF // curは設定する音量 // オーディオマネージャの取得 AudioManager manager = (AudioManager)getSystemService(AUDIO_SERVICE); // 音量を設定 manager.setStreamVolume(type, cur, 0); 備考 音量が連動するものやモードによって変更できない場合がある複数の音量を一度に変更できるUIの場合は1つ変更したら他の音量の表示を更新すること システムの言語(取得のみ) 取得 パーミッションは不要 // 現在のロケールを取得 Locale locale = Locale.getDefault(); // 言語名を取得 String language = locale.getDisplayLanguage(); 通知 アプリ実行中に言語を切り替えるとアプリが再起動するため不要 再起動前に必要なデータは保存すること 備考 特になし アカウントの同期 取得 android.permission.READ_SYNC_SETTINGSのパーミッションが必要 // 同期のマスター設定を取得 boolean state = ContentResolver.getMasterSyncAutomatically(); 設定 android.permission.WRITE_SYNC_SETTINGSのパーミッションが必要 // 同期のマスター設定を変更 ContentResolver.setMasterSyncAutomatically(state); 備考 他の設定と異なり取得にも設定にもパーミッションが必要 マスター設定なので全同期処理が対象になる 呼び出しモード 取得 パーミッションは不要 // オーディオマネージャを取得 AudioManager manager = (AudioManager)getSystemService(AUDIO_SERVICE); // モードで分岐 switch(manager.getRingerMode()) { case AudioManager.RINGER_MODE_NORMAL if(manager.shouldVibrate(AudioManager.VIBRATE_TYPE_RINGER)) { // 音声&振動の場合 } else { // 音声のみの場合 } break; case AudioManager.RINGER_MODE_VIBRATE // 振動のみの場合 break; case AudioManager.RINGER_MODE_SILENT // なしの場合 break; } 設定 パーミッションは不要 // 音声&振動に設定 mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); // 音声のみに設定 //mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL); //mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); // 振動のみに設定 //mAudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); // なしに設定 //mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 通知 パーミッションは不要 次のブロードキャストを受信する AudioManager.RINGER_MODE_CHANGED_ACTION 備考 音声と振動は別制御になっていることに注意 画面ロックの種別(取得のみ) 取得 パーミッションは不要 // システムディレクトリを取得 String dataSystemDirectory = Environment.getDataDirectory().getAbsolutePath() + "/system/"; // 「パターン」の時にパターンが格納されるファイル // 「パターン」以外の場合にサイズが0になる File patternFile = new File(dataSystemDirectory + "gesture.key"); // 「PIN」または「パスワード」の時に文字が格納されるファイル // 上記以外の場合にサイズが0になる File passwordFile = new File(dataSystemDirectory + "password.key"); if(patternFile.length() 0) { // 「パターン」の場合 } else if(passwordFile.length() 0) { // 「PIN」または「パスワード」の場合 // 使われた文字種を取得する int type = (int)Secure.getLong(getContentResolver(), "lockscreen.password_type", DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); switch(type) { case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC // 「パスワード」の場合 break; case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC // 「PIN」の場合 break; default // 「PIN」か「パスワード」か分からない場合 break; } } else { // 「なし」か「スライド」の場合 } 備考 ソースを解析して発見した強引な方法であり、動作するかは保障できない 画面の消灯時間 取得 パーミッションは不要 「-1」の場合は常灯扱い(消灯しない) // 消灯時間を取得(単位はミリ秒) int time = System.getInt(getContentResolver(), System.SCREEN_OFF_TIMEOUT, -1); 設定 android.permission.WRITE_SETTINGSのパーミッションが必要 「-1」の場合は常灯扱い(消灯しない) // 消灯時間を設定(単位はミリ秒) System.putInt(getContentResolver(), System.SCREEN_OFF_TIMEOUT, time); 備考 Androidのバージョンによって「画面設定」から選択できる値は異なる アプリ側からも好きに値を設定できるため取得値の扱いに注意が必要 ストレージの容量(取得のみ) 取得 パーミッションは不要 // pathは外部ストレージまたは内部ストレージのルートディレクトリ // 外部ストレージ:Environment.getExternalStorageDirectory().getAbsolutePath() // 内部ストレージ:Environment.getDataDirectory().getAbsolutePath() // ブロックサイズなどを取得し計算 StatFs fs = new StatFs(path); long size = fs.getBlockSize(); long total = fs.getBlockCount(); long avail = fs.getAvailableBlocks(); avail = total - avail; // ストレージの全容量 long capacityMax = size * total; // ストレージの使用中容量 long capacityUsed = size * avail; 備考 android.os.StatFsでディレクトリ配下の容量を取得するメディアが無いなど取得できない場合を考慮すること StatFs#getBlockSize()など各種メソッドがintを返すことに注意longにキャストしてから乗算しないと2GBを超える場合に結果がおかしくなる Javaはオーバーフローのチェックが無いため気付きにくい サンプルではあらかじめlongに入れることで回避している 容量の文字列化にはjava.text.NumberFormatやandroid.text.format.Formatterが便利 アニメーション速度 取得 パッケージandroid.osを作成して、その中に次のファイルを作成する package android.os; public class ServiceManager { public static IBinder getService(String serviceName) { return null; } } パッケージandroid.viewを作成して、その中に次のファイルを作成する package android.view; import android.os.IBinder; public interface IWindowManager { public static class Stub { public static IWindowManager asInterface(IBinder binder) { return null; } } public float getAnimationScale(int which); public void setAnimationScale(int which, float scale); } android.permission.SET_ANIMATION_SCALEのパーミッションが必要 // typeは以下のいずれか // ウィンドウ :0 // トランジション:1 // speedは通常のアニメーション速度に対する倍率 // IWindowManagerの取得 IWindowManager manager = IWindowManager.Stub.asInterface(ServiceManager.getService("window")); // アニメーション速度の取得 float speed = manager.getAnimationScale(type); 設定 取得で使ったServiceManagerとIWindowManagerが必要 android.permission.SET_ANIMATION_SCALEのパーミッションが必要 // typeは以下のいずれか // ウィンドウ :0 // トランジション:1 // speedは通常のアニメーション速度に対する倍率 // IWindowManagerの取得 IWindowManager manager = IWindowManager.Stub.asInterface(ServiceManager.getService("window")); // アニメーション速度の設定 manager.setAnimationScale(type, speed); 備考 非公開クラスを強引に使っているため、今後利用できなくなる可能性がある例外処理を忘れずに 速度は通常のアニメーション速度に対する倍率で取得/設定する0.5なら2倍速(速くなる)、2.0なら1/2倍速(遅くなる) 0.0のときはアニメーションしない 極端に大きな値を設定するとアニメーションが終わらず操作不能になる設定アプリを作る場合は最大値に制限を掛けること 取得/設定に関係なくSET_~と付くパーミッションが必要 ファンシーなIMEアニメーション 取得 パーミッションは不要 // リフレクションでSystem.FANCY_IME_ANIMATIONSの値を取得 Field field = System.class.getField("FANCY_IME_ANIMATIONS"); String imeFieldValue = (String)field.get(null); // IMEアニメーションが有効かを取得(0は無効、1は有効) int value = System.getInt(getContentResolver(), imeFieldValue); 設定 android.permission.WRITE_SETTINGSのパーミッションが必要 // リフレクションでSystem.FANCY_IME_ANIMATIONSの値を取得 Field field = System.class.getField("FANCY_IME_ANIMATIONS"); String imeFieldValue = (String)field.get(null); // IMEアニメーションが有効かを設定(0は無効、1は有効) System.putInt(getContentResolver(), mFancyImeFieldValue, value); 備考 IME起動/終了時のアニメーションが派手になる設定反映するには電源オンオフかホームアプリ再起動(未検証、言語変更でOK?)が必要 非公開のSystem.FANCY_IME_ANIMATIONSを使っているため、今後利用できなくなる可能性がある例外処理を忘れずに データ通信 取得 android.permission.ACCESS_NETWORK_STATEのパーミッションが必要 // リフレクションでConnectivityManager#getMobileDataEnabled()を取得する ConnectivityManager manager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE); Method method = manager.getClass().getMethod("getMobileDataEnabled"); // データ通信が有効か取得 boolean state = ((Boolean)method.invoke(manager)).booleanValue(); 設定 android.permission.CHANGE_NETWORK_STATEのパーミッションが必要 // リフレクションでConnectivityManager#setMobileDataEnabled()を取得する ConnectivityManager manager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE); Method method = manager.getClass().getMethod("setMobileDataEnabled", boolean.class); // データ通信が有効か設定 method.invoke(manager, state); 通知 android.permission.ACCESS_NETWORK_STATEのパーミッションが必要(かどうか未検証) 次のブロードキャストを受信する ConnectivityManager.CONNECTIVITY_ACTION 備考 Android 2.2には対応していない別途方法があるようだがエミュレータで動作しなかったので今回は見送り 非公開メソッドをリフレクションで呼び出しているため、今後利用できなくなる可能性がある例外処理を忘れずに キャッシュのクリア 実行 パッケージpackage android.content.pmを作成して、その中にIPackageDataObserver.aidlを作成する package android.content.pm; oneway interface IPackageDataObserver { void onRemoveCompleted(in String packageName, boolean succeeded); } android.permission.CLEAR_APP_CACHEのパーミッションが必要 // リフレクションでPackageManager#freeStorageAndNotify(long, IPackageDataObserver)を呼び出す // このメソッドは非同期実行なので終了時にToastを出す場合はHandlerを使う必要がある try { final Handler handler = new Handler(); PackageManager pm = getPackageManager(); Method method = pm.getClass().getMethod("freeStorageAndNotify", long.class, IPackageDataObserver.class); method.invoke(pm, Long.MAX_VALUE, new IPackageDataObserver.Stub() { @Override public void onRemoveCompleted(String packageName, boolean succeeded) throws RemoteException { handler.post(new Runnable() { @Override public void run() { // ここで終了メッセージを表示 } }); } }); } catch(Exception e) { } コメント 名前 コメント